//....
#include <vector>
#include <set>
#include <algorithm>
#include <string>
#include <cmath>
#include <queue>
#include <map>
#include <iostream>
#include <list>
#include <deque>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<bool> vb;
typedef pair<int,int> ii;
typedef vector<ii> vii;
typedef set<int> si;

#define MMM 1050000
long long a[MMM][3], n, m, x, i, j, d, s, sum;
int t[50];

int main (){
	freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);
	//for(j=i=1;i<21;++i, j=j*2+1)printf("%d\n", j);
	while(scanf("%d", &n)==1){
		scanf("%d", &m);
		memset(a,0,sizeof(a));
		d=0;
		for(i=0;i<m;++i){
			scanf("%d", &x);
			//printf(" +%d",x );
			a[d][2]=x;
			a[d][1]=x;
			a[d][0]=-1;
			s=d;
			++d;
			for(j=0;j<s;++j){
				if(a[j][2]+x<=n){
					a[d][2]=a[j][2]+x;
					a[d][1]=x;
					a[d][0]=j;
					//printf(" %d",a[d][2] );
					if(a[d][2]==n){break;}
					++d;
				}
			}
		}
		s=d;
		if(a[s][2]!=n){
			sum=0;
			for(j=0;j<s;++j){
				if(a[j][2]>sum){
					sum=a[j][2];
					d=j;
				}
			}
		}
		
		s=0;
		sum=a[d][2];
		x=a[d][1];
		j=a[d][0];
		t[s++]=x;
		while(1){
			x=a[j][1];
			j=a[j][0];
			t[s++]=x;
			if(j<0)break;
		}
		for(j=s-1;j>=0;--j)printf("%d ",t[j]);
		printf("sum:%d\n",sum);
	}
	return 0;
}
